//对axios进行二次封装
import axios from 'axios'

import { Toast } from 'vant'

//实例化axios
var service = axios.create({
    //baseURL:'/api', //基准路径
    //baseURL:'http://waimai.yantianfeng.com/api', //基准路径
    baseURL: process.env.VUE_APP_BASE_API, 
    
    //在开发环境下, process.env.VUE_APP_BASE_API 获取的是 .env.development 文件中的 VUE_APP_BASE_API 的值, 可以正常使用代理解决跨域问题(代理配置是生效的).
    //在生产环境下, process.env.VUE_APP_BASE_API 获取的是 .env.production 文件中的 VUE_APP_BASE_API 的值, 这时的代理配置是无效( 请求如果存在跨域, 必须由服务器解决 ).
    timeout: 10000
})

//设置请求拦截器
service.interceptors.request.use((config)=>{
    //统一设置请求头
    config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token');
    //显示loading
    Toast.loading({ message:'loading...',duration:0 })

    return config;
},(error)=>{
    return Promise.reject(error);
});

//设置响应拦截器
service.interceptors.response.use((res)=>{
    Toast.clear(); //隐藏loading
    return res;
},(error)=>{
    Toast.clear(); //隐藏loading
    if( error.response.status == 401 ){
        Toast.fail({ message: "身份认证失败,登陆过期,请重新登录!" })
    }
    else if( error.response.status == 404 ){
        Toast.fail({ message: "访问路径有误!" })
    }
    else if( error.response.status == 500 ){
        Toast.fail({ message: "服务器内部错误!" })
    }
    return Promise.reject(error);
});

export default service;